package com.softer.chengxin.home.controller;

import com.softer.chengxin.common.domin.*;
import com.softer.chengxin.common.enums.ResultEnum;
import com.softer.chengxin.corp.domin.Corp;
import com.softer.chengxin.home.domin.Column;
import com.softer.chengxin.home.domin.Pie;
import com.softer.chengxin.home.service.HomeService;
import com.softer.chengxin.listener.MyHttpSessionListener;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Gong Zhiyang
 * @date 2018/9/26
 */
@RestController
public class HomeController {
    @Autowired
    private HomeService homeService;

    /**
     * 获取菜单
     *
     * @param session 缓存
     * @return 菜单列表
     */
    @PostMapping("/api/Home/GetMenu")
    public List<Module> GetMenu(HttpSession session) {
        //登陆用户名
        String loginName = (String) session.getAttribute(Common.LOGIN_NAME);
        //登陆类型
        String loginType = (String) session.getAttribute(Common.LOGIN_TYPE);
        //获取项目ID
        String projectId = (String) session.getAttribute(Common.PROJECT_ID);
        return homeService.selectAll(loginName, loginType, projectId);
    }

    /**
     * 判断session是否有效
     *
     * @param session 缓存
     * @return 判断结果
     */
    @PostMapping("/api/Home/GetSession")
    public CommonResult getSession(HttpSession session) {
        String loginName = (String) session.getAttribute(Common.LOGIN_NAME);
        if (StringUtils.isNotBlank(loginName)) {
            return new CommonResult(ResultEnum.SUCCESS.getCode(), "成功！");
        }
        return new CommonResult(ResultEnum.FAIL.getCode(), "失败！");
    }

    /**
     * 判断企业登陆类型
     *
     * @param session 缓存
     * @return 企业登陆类型（1企业登陆，0项目登陆）
     */
    @PostMapping("/api/Home/getLoginType")
    public int getLoginType(HttpSession session) {
        //获取项目ID
        String projectId = (String) session.getAttribute(Common.PROJECT_ID);
        if (StringUtils.isNotBlank(projectId)) {
            return Integer.parseInt(Common.ZERO);
        }
        return Integer.parseInt(Common.ONE);
    }

    /**
     * 获取登陆名
     *
     * @param session 缓存
     * @return 用户名
     */
    @PostMapping("/api/Home/GetLogName")
    public String GetLogName(HttpSession session) {
        String loginName = (String) session.getAttribute(Common.LOGIN_NAME);
        String loginType = (String) session.getAttribute(Common.LOGIN_TYPE);
        return homeService.getName(loginName, loginType);
    }

    /**
     * 登录类型
     *
     * @return 返回的值是text/1:物业企业，0是主管部门
     */
    @PostMapping(value = "/api/Home/GetLogType")
    public String getLogType(HttpSession session) {
        return (String) session.getAttribute(Common.LOGIN_TYPE);
    }

    /**
     * 管理员-获取所有信息的待办事项
     *
     * @return 管理员-获取所有信息的待办事项
     */
    @PostMapping(value = "/api/Home/Getdbsx")
    public Map<String, Object> getDbsx(HttpSession session) {
        String loginName = (String) session.getAttribute(Common.LOGIN_NAME);
        if (StringUtils.isBlank(loginName)) {
            return new HashMap<>(Common.SIX);
        }
        //查询企业ID
        Integer id = (Integer) session.getAttribute(Common.ID);
        return homeService.findCountByState(id, loginName);
    }

    /**
     * 获取柱状图
     *
     * @return 集合
     */
    @PostMapping("/api/Home/getColumnList")
    public List<Column> getColumnList(HttpSession session) {
        // 查询登陆ID
        Integer id = (Integer) session.getAttribute(Common.ID);
        if (id == null) {
            return new ArrayList<>();
        }
        return homeService.getColumnList(id);
    }

    /**
     * 获取饼图
     *
     * @param year 年份
     * @return 集合
     */
    @PostMapping("/api/Home/getPieList")
    public List<Pie> getPieList(HttpSession session, String year) {
        // 查询登陆ID
        Integer id = (Integer) session.getAttribute(Common.ID);
        if (id == null) {
            return new ArrayList<>();
        }
        return homeService.getPieList(year, id);
    }

    /**
     * 查询在线人数
     */
    @RequestMapping("/api/Home/online")
    public List<Integer> online(HttpSession session) {
        //  查询登陆ID
        Integer id = (Integer) session.getAttribute(Common.ID);
        if (id == null) {
            return new ArrayList<>();
        }
        return homeService.online(id);
    }

    /**
     * 查询在线企业列表
     *
     * @param page   页面信息
     * @param online 是否在线（0否，1是）
     * @return 列表
     */
    @PostMapping("/api/Home/getOnlineCorpList")
    public ManagerPageResult getOnlineCorpList(HttpSession session, Page page, String online) {
        //  查询登陆ID
        Integer id = (Integer) session.getAttribute(Common.ID);
        if (id == null) {
            return new ManagerPageResult();
        }
        return homeService.getOnlineCorpList(id, page, online);
    }
}
